Convolutional codes are often used in digital communication systems to protect transmitted information from error. Such communication systems include the Direct Sequence Code Division Multiple Access (DS-CDMA) standard IS-95, the Global System for Mobile Communications (GSM), and next generation wideband communication systems. Typically in these systems, a signal is convolutionally coded into an outgoing code vector that is transmitted. At a receiver, a decoder, such as a Viterbi decoder as is known in the art, uses a trellis structure to perform an optimum search for the transmitted signal bits based on maximum likelihood criterion.
More recently, turbo codes have been developed that outperform conventional coding techniques. Turbo codes are generally composed of two or more recursive systematic convolutional codes and turbo interleavers. Correspondingly, turbo decoding is iterative and uses a soft output decoder to decode the individual convolutional codes. The soft outputs of the decoders are used in the decoding procedure to iteratively approach the converged final results.
FIG. 1 shows an overview of typical turbo encoder that is constructed with one interleaver and two constituent codes, which are recursive systematic convolutional (RSC) codes, but can be block codes, also. A turbo encoder is shown which is a parallel concatenation of two RSCs with an interleaver, π, between them. The output of the turbo encoder is generated by multiplexing (concatenating) the systematic information bits, xs, and parity bits, p1 and p2, from the two encoders. Typically, the parity bits are punctured in some manner for the first transmission and combined to increase code rate. The puncturing mechanism occurs in the Rate Matching block. In the case subsequent transmissions are allowed and transmissions with different puncturings can be combined at the receiver, puncturing may also be preformed on the systematic bits.
Typically, the encoded data is transmitted to a receiver, which uses error correction typically provided by the turbo code, followed by error detection typically provided by a CRC code. If an error is detected, the receiver can request that the transmitter, such as a base station for example, retransmit the data using an Automatic Repeat Request (ARQ). In other words, if a receiver is not able to resolve the data bits in time, the radio can request the transmitter to resend either an identical transmission as the first, or one punctured different from the first transmission but encoded based on same message (i.e. based on the same information bit sequence input to the turbo encoder). Since this process is a hybrid form of error correction coupled with error detection feedback through the ARQ mechanism it is commonly referred to as Hybrid Automatic Repeat Request (HARQ).
Two known forms of HARQ are Chase combining and Incremental Redundancy (IR). In addition, the IR scheme can be full or partial. Chase combining is a simplified form of HARQ wherein the receiver simply requests retransmission of the original codeword again. IR is more complicated in that it provides for a retransmission of the code word using more or different parity bits (than were present during the previous transmission), lowering the overall combined code rate. A repetition or puncturing pattern in the parity bits can be defined using a classical code puncturing matrix, as is known in the art, or a rate matching algorithm to maintain the code rate of the physical channel. However, previous rate matching algorithms do not maintain a homogenous puncturing pattern after incremental redundancy even if orthogonality is retained (i.e. even if each transmission contains unique bits not contained in other transmissions), thereby presenting a higher than necessary frame error rate (FER). In particular, existing rate matching algorithms provide differing error degradations depending on the redundancy version being used. Moreover, there is no method for determining redundancy parameters for HARQ.
What is needed is an improved turbo coder that utilizes a unified puncturing scheme, which provides an improved frame error rate using an incremental redundancy technique whereby orthogonal redundancy versions are available for transmission, the combination of which result in an uniform puncturing pattern throughout the decoder trellis. It would also be advantageous to provide this improvement using any of the available redundancy versions. It would also be of benefit, to provide a technique for determining redundancy parameters to provide a turbo coder with minimized computational complexity.